Удаление высокочастотного шума из данных гироскопа
В этом примере показано, как удалить высокочастотные выбросы из потоковой передачи с использованием блока MedianFilter из библиотеки EngeeDSP.
Медианный фильтр — это метод нелинейной цифровой фильтрации , часто используемый для удаления шума из изображения или сигнала.
Реализация данного алгоритма начинается с подключения библиотек:
Pkg.add(["DelimitedFiles"])
import .EngeeDSP
using DelimitedFiles
using Plots
plotlyjs()
Загрузка сигнала с высокочастотными шумами из файла JL - это файл исходного кода Julia.
matrix = readdlm("$(@__DIR__)/data.jl", '\t', Float64, '\n');
Кодирование файла на 714 сэмплов, чтобы каждый столбец данных содержал 10 кадров.
In1 = map(Iterators.partition(axes(matrix,1), 714)) do cols
matrix[cols,:]
end
Реализация фильтрации, система использует длину окна 10.
var_median_fir = EngeeDSP.MedianFilter(WindowLength = 10)
EngeeDSP.setup!( var_median_fir, In1[1] )
Out1 = In1
for i = 1:10 # Обработка сигнала в цикле.
global gyroData = In1[i]
global filteredData = EngeeDSP.step!(var_median_fir,gyroData)
Out1[i] = filteredData
end
Out1 = vcat(Out1...)
Создание графика объекта для просмотра отфильтрованного вывода и сравнения его с входным сигналом с шумами.
plot( [matrix[:,3],Out1[:,3]], ylims = [-300, 300], label=["Входной сигнал" "Отфильтрованный выход"], legendfontsize=6)
Вывод
В данном примере были продемонстрированы возможности использования в среде разработки Engee дополнительных библиотек, расширяющих функционал среды, а именно библиотеки EngeeDSP и реализованного в ней MedianFilter.